Ethical Software Engineering Beyond Code

ENGG 513 Aly Masani • 30153947 Jan 29, 2026

Ethical Software Engineering

Moving Beyond Technical Correctness

Software engineering is often framed as a neutral, technical discipline focused on efficiency, scalability, and innovation. However, recent scholarship challenges this assumption by showing how software systems actively shape social behavior, decision-making, and power relations.

Assignment Overview

This presentation engages with four key resources to explore ethical engineering practice and professional responsibility:

  • Generative AI Is Not Inevitable (Bender & Hanna)
  • The Invisible Networks Shaping Your Everyday Life
  • Climate Risk and Normative Uncertainties (Taebi et al.)
  • Buddhism and AI Ethics (Priyadarshi)

Through these resources, we examine how ethical responsibility in software engineering extends far beyond writing functional code to encompass infrastructure dependencies, social impacts, and professional accountability.

Beyond Code

Expanding Our View of Responsibility

The Inevitability Narrative

In Generative AI Is Not Inevitable, Bender and Hanna argue that the widespread belief in AI's inevitability is not a technical truth but a narrative that removes human agency and accountability from engineering decisions.

Key Insight: Framing technological development as unavoidable discourages ethical reflection and normalizes harm as an acceptable cost of progress.
Inevitability Narrative Diagram
Figure 3. Rejecting the "inevitability" narrative in technology development. Rather than being an unstoppable force, technology is shaped by human choices at every decision point. Engineers maintain agency, accountability, and ethical duty throughout the development lifecycle. (Created by author, based on Bender & Hanna)

Hidden Infrastructure

The Invisible Networks Shaping Your Everyday Life highlights how modern life is structured by hidden infrastructures—energy systems, data networks, and computational pipelines—that quietly constrain individual choice.

Software does not operate in isolation; it depends on material systems with environmental and social consequences. For software engineers, this means ethical responsibility extends beyond writing functional code to understanding how digital systems interact with physical infrastructure, labour, and climate impact.

Responsibility Layers
Figure 1. Layers of ethical responsibility in software engineering. Engineers remain accountable across all layers—from code optimization to infrastructure dependencies to social impact—fulfilling APEGA's requirement to hold paramount the safety, health, and welfare of the public. (Created by author)

APEGA Perspective

This challenges the idea that engineers are only responsible for the technical correctness of their work. The APEGA Code of Ethics requires engineers to hold paramount the safety, health, and welfare of the public. When software systems shape access to services, automate decisions, or consume significant energy resources, ethical responsibility cannot be deferred to "the system" or "the algorithm."

Normative Uncertainty

Navigating Ethical Complexity

No Single Correct Solution

Ethical engineering decisions rarely present a single, clearly correct solution. Taebi et al. describe this condition as normative uncertainty: situations where multiple courses of action are morally defensible but incompatible, or where no option is fully ethical.

In climate risk governance, for example, adaptation strategies may protect one population while disadvantaging another, raising unresolved questions of justice, responsibility, and intergenerational equity.

Normative Uncertainty
Figure 2. Normative uncertainty in software engineering decisions. When deploying automated systems, competing ethical values (efficiency, fairness, privacy, access, transparency) create tensions with no single correct resolution. This demands transparency, stakeholder engagement, and ongoing reflection rather than defaulting to optimization metrics. (Created by author, concept from Taebi et al.)

Application to Software Engineering

This concept directly applies to software engineering. Automated decision systems in finance, healthcare, or criminal justice may improve efficiency while simultaneously amplifying bias or excluding vulnerable groups.

Key Point: Normative uncertainty does not absolve engineers of responsibility; instead, it demands transparency, reflection, and inclusive decision-making.

Taebi et al. argue for approaches such as Wide Reflective Equilibrium and adaptive planning to make ethical tensions explicit rather than hidden within technical design choices.

Beyond Metrics

A complementary perspective is offered in Buddhism and AI Ethics, where Tenzin Priyadarshi critiques the overreliance on metrics and optimization in technology development.

While quantitative measures are useful, reducing human wellbeing to numerical targets risks overlooking values such as compassion, trust, and contextual judgment. Optimizing software purely for speed, accuracy, or profit may inadvertently undermine the social fabric it operates within.

What This Means for Practice

Ethical software engineering requires:

  • Acknowledging uncertainty and complexity
  • Resisting simplistic metrics
  • Engaging diverse voices early in the design process
  • Making trade-offs explicit and transparent

Rather than retrofitting ethics after harm has occurred.

Personal & Professional Accountability

My Role as a Future Engineer

Reshaping My Understanding

As a future software engineer, these resources have reshaped how I understand professional accountability. Ethical practice is not limited to complying with regulations or avoiding obvious harm; it involves actively questioning the assumptions embedded in software systems.

Beyond Technical Execution

The narrative that technology is inevitable can lead engineers to disengage from moral responsibility, yet APEGA explicitly emphasizes personal accountability for professional judgment.

Questions I Must Ask

In practice, this means I must consider:

  • Not only what a system can do, but what it should do
  • Whether efficiency gains justify social or environmental costs
  • Whether datasets reflect structural bias
  • Whether deploying a system at scale is ethically defensible

Humility and Openness

Inspired by Buddhist ethics, this also requires humility—recognizing the limits of technical knowledge and remaining open to qualitative perspectives that cannot be reduced to metrics.

Core Insight: Normative uncertainty does not signal failure; it signals responsibility.

A Practice of Ongoing Reflection

Ultimately, ethical software engineering is a practice of ongoing reflection. By acknowledging uncertainty, engaging stakeholders, and resisting narratives that detach engineers from the consequences of their work, I can better uphold my obligations to:

  • The public
  • The profession
  • Society at large

Conclusion

Ethical Engineering as Active Choice

Key Takeaways

1. Reject Inevitability

Technology is not an unstoppable force. Engineers have agency at every decision point and must actively choose ethical paths.

2. Expand Responsibility

Ethical accountability extends beyond code to infrastructure, social impact, and long-term consequences.

3. Embrace Complexity

Normative uncertainty is inherent in engineering decisions. Rather than seeking simple solutions, we must engage transparently with trade-offs.

4. Look Beyond Metrics

Human values like compassion, trust, and justice cannot be reduced to optimization targets. Ethical practice requires qualitative judgment.

Final Reflection

The APEGA Code of Ethics states that engineers must "hold paramount the safety, health, and welfare of the public." This is not a passive obligation—it requires:

  • Active questioning of design assumptions
  • Ongoing engagement with diverse stakeholders
  • Courage to refuse unethical work
  • Humility about the limits of technical knowledge

By rejecting narratives of inevitability, acknowledging normative uncertainty, and maintaining personal accountability, I commit to practicing software engineering not just as a technical discipline, but as an ethical profession.

References

[1] E. M. Bender and A. Hanna, "Generative AI Is Not Inevitable"
[2] "The Invisible Networks Shaping Your Everyday Life"
[3] S. H. Taebi et al., "Climate Risk and Normative Uncertainties"
[4] T. Priyadarshi, "Buddhism and AI Ethics"